package com.fitbet.api.service;
import java.util.List;
import java.util.Map;
import com.fitbet.entity.bet.Bet;
import com.fitbet.entity.bet.UserBet;
import com.fitbet.entity.bet.UserBetStatus;
import com.fitbet.entity.bet.UserBetSupport;
import com.fitbet.entity.bet.UserBetSupportStatus;
import com.fitbet.entity.user.User;

/**
 * 
 * @author sjh
 *
 */
public interface UserBetService {
    
    /**
     * 
     * @param userId
     * @param status
     * @return
     */
    public List<UserBet> list(Long userId, UserBetStatus[] status);
    
    /**
     * 
     * @param status
     * @return
     */
    public List<UserBet> listHotUserBet(UserBetStatus[] status);
    
    /**
     * 
     * @param userId
     * @param status
     * @return
     */
    public List<UserBetSupport> listUserBetSupport(Long userId, UserBetSupportStatus[] status);
    
    /**
     * 
     * @param userBetId
     * @param status
     * @return
     */
    public UserBet loadUserBet(Long userBetId, UserBetStatus[] status);
    
    /**
     * 
     * @param userId
     * @param betId
     * @param status
     * @return
     */
    public UserBet loadUserBet(Long userId, Long betId, UserBetStatus[] status);
    
    /**
     * 
     * @param userBet
     * @return
     */
    public List<UserBetSupport> listSupports(UserBet userBet);
    
    /**
     * 
     * @param userBet
     * @param user
     * @return
     */
    public UserBetSupport loadSupports(UserBet userBet, User user);
    
    /**
     * 
     * @param user
     * @param bet
     * @return
     */
    public Map<String, Object> createUserBet(User user, Bet bet);
    
    /**
     * 
     * @param userId
     * @param betId
     * @param weight
     * @param beforeVedio
     * @return
     */
    public UserBet openUserBet(Long userId, Long betId, Float weight, String beforeVedio);
    
    /**
     * 
     * @param userId
     * @param betId
     * @param weight
     * @return
     */
    public UserBet closeUserBet(Long userId, Long betId, Float weight, String afterVedio);
    
    /**
     * 
     * @param userId
     * @param betId
     * @param videoPath
     * @param phase
     * @return
     */
    public UserBet uploadVideo(Long userId, Long betId, String videoPath, String phase, String status);
    
    /**
     * 
     * @param user
     * @param userBetId
     * @param support
     * @return
     */
    public Map<String, Object> createUserBetSupport(User user, Long userBetId, boolean support);
}
